package com.lazyboyl.sharding.proxy.net.frontend;

import com.lazyboyl.sharding.proxy.net.proto.parse.ServerParseSelect;
import com.lazyboyl.sharding.proxy.net.response.*;

import java.util.List;
import java.util.Map;

/**
 * @author linzf
 * @since 2021-06-30
 * 类描述： 查询的handler操作
 */
public class SelectHandler {

    public static void handle(String stmt, FrontendConnection c, int offs) {
        int type = ServerParseSelect.parse(stmt, offs);
        switch (type) {
            // 执行SELECT @@VERSION_COMMENT语句的时候的返回。
            case ServerParseSelect.VERSION_COMMENT:
                SelectVersionComment.response(c);
                break;
            // 执行SELECT DATABASE()语句的时候的返回。
            case ServerParseSelect.DATABASE:
                SelectDatabase.response(c);
                break;
            // 执行SELECT user()语句的时候的返回。
            case ServerParseSelect.USER:
                SelectUser.response(c);
                break;
            // 执行SELECT VERSION()语句的时候的返回，获取当前的spring-boot-sharding-sphere-proxy的版本号。
            case ServerParseSelect.VERSION:
                SelectVersion.response(c);
                break;
            // 此处为真正执行的sql语句的位置，即将需要执行的sql语句交给shardingSphere来执行
            default:
                QueryResult.response(c, stmt);
        }
    }

}
